package com.big.codegen.service;

import com.big.codegen.domain.dto.CodegenTableConfigDTO;
import com.big.codegen.domain.dto.ColumnDTO;

import java.util.List;

/**
 * <p>
 * 表生成
 * </p>
 *
 * @author 山归岿
 * @create 2025-06-26-19:54
 */
public interface TableCodegenService {
    /**
     * 生成创建表的SQL语句
     *
     * @param datasourceId 数据源ID
     * @param tableName    表名
     * @param tableComment 表注释
     * @param columns      字段列表
     * @return 创建表的SQL语句
     */
    String generateSql(String datasourceId, String tableName, String tableComment, List<ColumnDTO> columns);

    /**
     * 创建表
     *
     * @param dto 表配置数据传输对象
     * @return 是否创建成功
     */
    boolean createTable(CodegenTableConfigDTO dto);

    /**
     * 获取表的字段信息
     *
     * @param datasourceId 数据源ID
     * @param tableName    表名
     * @return 字段列表
     */
    List<ColumnDTO> getTableColumns(String datasourceId, String tableName);

    /**
     * 获取数据源中的所有表名
     *
     * @param datasourceId 数据源ID
     * @return 表名列表
     */
    List<String> getTableNames(String datasourceId);

    /**
     * 生成创建表的SQL语句
     *
     * @param datasourceId 数据源ID
     * @param tables       表名信息
     * @return 是否创建成功
     */
    Boolean importTables(String datasourceId, List<String> tables);
}
